package com.itheima.day10.myStream.test3;

import java.util.LinkedList;
import java.util.List;
import java.util.function.Consumer;
import java.util.function.Predicate;

public class Test {
    public static void main(String[] args) {
        LinkedList<String> ll = new LinkedList<>(List.of("张三", "张三丰", "张无忌", "李世明", "王健林", "王爱平"));

        /*
            filter方法获取流中的每一个数据
            而test方法中s，就依次表示流中的每一个数据
            我们只要test方法对s进行判断就可以了
            如果判断结果未true，则当前的数据留下
            如果判断结果未false，则当前数据就不要
         */
        // 匿名内部类
        ll.stream().filter(new Predicate<String>() {
            @Override
            public boolean test(String s) {
                return s.startsWith("张");
            }
        }).forEach(new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.print(s + " ");
            }
        });


        System.out.println("\n--------");

        // Lambda表达式
        ll.stream().filter((String s) -> {
            return s.startsWith("张");
        }).forEach((String s) -> {
            System.out.print(s + " ");
        });

        System.out.println("\n--------");

        // Lambda表达式简写
        ll.stream().filter(s -> s.startsWith("张")).forEach(s -> System.out.print(s + " "));

    }
}
